1、总线设备驱动框架
	linux中用struct bus_type、struct device、struct device_driver来描述总线、设备和设备驱动，这3个对象都内嵌
了struct kobject或struct kset对象，因此可以在/sys/目录生成相应的文件用于描述3者之间的关系。在总线设备驱动框
架中设备和设备驱动分别挂载在对应的总线上以此实现了驱动和设备的分离。
2、struct bus_type对象
	struct bus_type对象表示一条总线，其中主要包括以下成员：
	const char *name; 												//总线名称
	int (*match)(struct device *dev, struct device_driver *drv);	//完成设备和驱动进行匹配的功能
	//注册总线
	int bus_register(struct bus_type *bus)
	//注销总线
	void bus_unregister(struct bus_type *bus)
3、struct device对象
	struct device对象表示一个设备，其中主要包括以下成员：
	const char *init_name;					//设备名称
	struct bus_type *bus;					//所依赖的总线
	void *platform_data;					//平台数据，设备私有
	void *driver_data;						//驱动数据，驱动私有
	void (*release)(struct device *dev);	//释放函数，注销设备是调用，若不提供此函数在卸载时可能会抱错
	struct device_node *of_node;			//指向此设备的设备树节点
	//注册设备
	int device_register(struct device *dev)
	//注销设备
	void device_unregister(struct device *dev)
4、struct device_driver对象
	struct device_driver对象表示一个驱动，其中主要包括以下成员：
	const char *name;							//驱动名称
	struct bus_type *bus;						//所依赖的总线
	const struct of_device_id *of_match_table;	//设备树匹配表，在使用设备树时用此参数与设备树描述的设备的co
												//mpatible属性进行匹配
	int (*probe)(struct device *dev);			//设备和驱动匹配成功执行
	int (*remove)(struct device *dev);			//设备或驱动卸载时执行
	//注册驱动
	int driver_register(struct device_driver *drv)
	//注销驱动
	void driver_unregister(struct device_driver *drv)
5、加载/卸载顺序
	加载时必须先加载总线，然后再加载设备或设备驱动，卸载时先卸载设备或设备驱动，再卸载总线。
6、补充
	虽然struct bus_type、struct device、struct device_driver能够描述总线设备驱动框架，但是他的抽象层次太高，
不能描述具体的总线设备驱动框架，一般情况下一种具体的总线设备驱动框架都是由struct bus_type、struct device、
struct device_driver进行派生。

